import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
import Inspector from 'unplugin-vue-dev-locator/vite'
import traeBadgePlugin from 'vite-plugin-trae-solo-badge'
// 自动导入组件
import AutoImport from 'unplugin-auto-import/vite'
// 自动导入组件
import Components from 'unplugin-vue-components/vite'
// 热重启
import ViteRestart from 'vite-plugin-restart'

const pathSrc = path.resolve(__dirname, 'src')
// https://vite.dev/config/
export default defineConfig(({ mode, command }) => {
  const root = process.cwd()
  const env = loadEnv(mode, root)
  console.log(env)
  return {
    plugins: [
      vue(),
      Inspector(),
      traeBadgePlugin({
        variant: 'dark',
        position: 'bottom-right',
        prodOnly: true,
        clickable: true,
        // 点击跳转
        clickUrl: 'https://www.trae.ai/solo?showJoin=1',
        autoTheme: true,
        autoThemeTarget: '#app',
      }),
      // 自动导入
      AutoImport({
        imports: [
          'vue',
          'vue-router',
          // Add more modules as needed
        ],
        dts: 'src/types/auto-imports.d.ts', // Generate .d.ts file
        eslintrc: {
          enabled: true, // Generate .eslintrc-auto-import.json
        },
      }),

      // 自动导入组件
      Components({
        dirs: ['src/components'], // 目标文件夹
        extensions: ['vue', 'jsx'], // 文件类型
        dts: 'src/types/components.d.ts', // Generate .d.ts file
      }),
      /// 热重启
      ViteRestart({
        // 通过这个插件，在修改vite.config.js文件则不需要重新运行也生效配置
        restart: ['vite.config.ts'],
      }),
    ],
    resolve: {
      alias: {
        '@': pathSrc, // ✅ 定义 @ = src
        '/img': './src/assets',
      },
      extensions: ['.js', '.ts', '.vue', '.json', '.less', '.css'],
      dedupe: ['vue', 'vue-router'],
    },
    build: {
      terserOptions: {
        compress: {
          drop_debugger: true,
          drop_console: true,
        },
      },
      sourcemap: false,
      // 提高静态资源的容量大小，chunkSizeWarningLimit 默认值是 2048
      chunkSizeWarningLimit: 1500,
      outDir: 'dist/axw',
      rollupOptions: {
        output: {
          compact: true,
          chunkFileNames: 'js/[name]-[hash].js', // 引入文件名的名称
          entryFileNames: 'js/[name]-[hash].js', // 包的入口文件名称
          assetFileNames: '[ext]/[name]-[hash].[ext]', // 资源文件像 字体，图片等
          // 插件打包做处理
          manualChunks(id) {
            if (id.includes('node_modules')) {
              return id
                .toString()
                .split('node_modules/')[1]
                .split('/')[0]
                .toString()
            }
          },
        },
      },
    },
    server: {
      host: '0.0.0.0', // 允许外部访问
      port: 5173,
      open: true,
    },
    preview: {
      open: true,
    },
    css: {
      preprocessorOptions: {
        scss: {
          math: 'always',
        },
      },
    },
  }
})
